/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.rrhh.controlador;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.conexion.cConexion;
import sv.com.intesal.rrhh.bean.Empleado;
import sv.com.intesal.rrhh.sql.SQLEmpleado;

import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.seguridad.controlador.SessionControlador;

/**
 *
 * @author JM
 */
public class EmpleadoControlador {

    public List<Empleado> fillGrid() throws Exception {
        List<Empleado> list = new ArrayList<Empleado>();
        try {
            ResultSet rs = cConexion.conectar().prepareStatement(SQLEmpleado.BuscarEmpleado).executeQuery();
            while (rs.next()) {
                Empleado e = new Empleado();
                e.setCodigo_em(rs.getInt("id_e"));
                e.setId_e(rs.getInt("id_e"));
                e.setIndentifacador_em(rs.getString("identificador_e"));
                e.setNombre_em(rs.getString("nombre_e"));
                e.setApellido_em(rs.getString("apellido_e"));
                e.setNit_em(rs.getString("nit_e"));
                e.setDui_em(rs.getString("dui_e"));
                e.setTelefono_em(rs.getString("telefono_e"));
                e.setCelular_em(rs.getString("celular_e"));
                e.setDireccion_em(rs.getString("direccion_e"));
                e.setCodigo_c(rs.getInt("id_c"));
                e.setNombre_c(rs.getString("nombre_c"));

                e.setId_a(rs.getInt("id_a"));
                e.setNombre_a(rs.getString("nombre_a"));


                list.add(e);
            }
            rs.close();
            return list;
        } catch (Exception ec) {
            throw new Exception(ec);
        }
    }

    public void mantEmpleado(Empleado empleado) throws Exception {
        try {
            PreparedStatement pstm = null;
            Connection cnn = cConexion.conectar();

            if (empleado.getId_e() == null) {
                pstm = cnn.prepareStatement(SQLEmpleado.InsertarEmpleado);
            } else {
                pstm = cnn.prepareStatement(SQLEmpleado.ModificarEmpleado);
                pstm.setInt(10, empleado.getCodigo_em());
            }
            pstm.setString(1, empleado.getNombre_em());
            pstm.setString(2, empleado.getApellido_em());
            pstm.setString(3, empleado.getDireccion_em());
            pstm.setString(4, empleado.getDui_em());
            pstm.setString(5, empleado.getNit_em());
            pstm.setString(6, empleado.getTelefono_em());
            pstm.setString(7, empleado.getCelular_em());
            pstm.setString(8, empleado.getIndentifacador_em());
            pstm.setInt(9, empleado.getCodigo_c());
            pstm.executeUpdate();
            pstm.close();

            Mensaje m = new Mensaje();
            if (empleado.getId_e() == null) {
                m.messageInfo(m.getIinformation());
            } else {
                m.messageInfo(m.getImodificada());
            }

        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    /*       .....................................*/
    public Empleado getEmpleado(Integer codigo_e) throws Exception {

        Connection cnn = null;
        Empleado em = new Empleado();
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            cnn = cConexion.conectar();
            ps = cnn.prepareStatement(SQLEmpleado.getEmpleado);
            ps.setInt(1, codigo_e);
            rs = ps.executeQuery();
            rs.next();

            em.setCodigo_em(rs.getInt("id_e"));
            em.setId_e(rs.getInt("id_e"));

            em.setIndentifacador_em(rs.getString("identificador_e"));
            em.setNombre_em(rs.getString("nombre_e"));
            em.setApellido_em(rs.getString("apellido_e"));
            em.setNit_em(rs.getString("nit_e"));
            em.setDui_em(rs.getString("dui_e"));
            em.setTelefono_em(rs.getString("telefono_e"));
            em.setCelular_em(rs.getString("celular_e"));
            em.setDireccion_em(rs.getString("direccion_e"));
            em.setNombreCompleto(rs.getString("nombre_e") + " " + rs.getString("apellido_e"));

            em.setId_a(rs.getInt("id_a"));
            em.setNombre_a(rs.getString("nombre_a"));

            em.setCodigo_c(rs.getInt("id_c"));
            em.setNombre_c(rs.getString("nombre_c"));

            rs.close();
            ps.close();
            cnn.close();

            return em;
        } catch (Exception ex) {
            throw new Exception(ex);
        }

    }

    public List<Empleado> fillGrid_PD() throws Exception {
        List<Empleado> list = new ArrayList<Empleado>();
        try {
            SessionControlador sc = new SessionControlador();
            PreparedStatement ps = null;
            Connection cnn = null;
            ResultSet rs = null;
            cnn = cConexion.conectar();
            ps = cnn.prepareStatement(SQLEmpleado.buscarEmpleadoSucursal);
            ps.setInt(1, sc.getCodigo_Sucursal());
            rs = ps.executeQuery();

            while (rs.next()) {
                Empleado e = new Empleado();
                e.setCodigo_em(rs.getInt("id_e"));
                e.setId_e(rs.getInt("id_e"));

                e.setIndentifacador_em(rs.getString("identificador_e"));
                e.setNombre_em(rs.getString("nombre_e"));
                e.setApellido_em(rs.getString("apellido_e"));
                e.setNit_em(rs.getString("nit_e"));
                e.setDui_em(rs.getString("dui_e"));
                e.setTelefono_em(rs.getString("telefono_e"));
                e.setCelular_em(rs.getString("celular_e"));
                e.setDireccion_em(rs.getString("direccion_e"));
                e.setCodigo_c(rs.getInt("id_c"));
                e.setNombre_c(rs.getString("nombre_c"));

                e.setId_a(rs.getInt("id_a"));
                e.setNombre_a(rs.getString("nombre_a"));

                e.setNombreCompleto(rs.getString("nombre_e") + " " + rs.getString("apellido_e"));

                e.setNombre_u(rs.getString("usuario_u"));
                e.setNivel_u(rs.getInt("nivel_u"));
                e.setId_u(rs.getInt("id_u"));
                list.add(e);
            }
            rs.close();
            ps.close();
            cnn.close();
            return list;
        } catch (Exception ec) {
            throw new Exception(ec);
        }
    }
    public List<Empleado> fillGrid_QuickEmpleado_Usuario() throws Exception {
        List<Empleado> list = new ArrayList<Empleado>();
        try {
            SessionControlador sc = new SessionControlador();
            PreparedStatement ps = null;
            Connection cnn = null;
            ResultSet rs = null;
            cnn = cConexion.conectar();
            ps = cnn.prepareStatement(SQLEmpleado.getEmpleadoSucursal_sin_Usuario);
            ps.setInt(1, sc.getCodigo_Sucursal());
            rs = ps.executeQuery();

            while (rs.next()) {
                Empleado e = new Empleado();
                e.setCodigo_em(rs.getInt("id_e"));
                e.setId_e(rs.getInt("id_e"));

                e.setIndentifacador_em(rs.getString("identificador_e"));
                e.setNombre_em(rs.getString("nombre_e"));
                e.setApellido_em(rs.getString("apellido_e"));
                e.setNit_em(rs.getString("nit_e"));
                e.setDui_em(rs.getString("dui_e"));
                e.setTelefono_em(rs.getString("telefono_e"));
                e.setCelular_em(rs.getString("celular_e"));
                e.setDireccion_em(rs.getString("direccion_e"));
                e.setCodigo_c(rs.getInt("id_c"));
                e.setNombre_c(rs.getString("nombre_c"));

                e.setId_a(rs.getInt("id_a"));
                e.setNombre_a(rs.getString("nombre_a"));

                e.setNombreCompleto(rs.getString("nombre_e") + " " + rs.getString("apellido_e"));
                list.add(e);
            }
            rs.close();
            ps.close();
            cnn.close();
            return list;
        } catch (Exception ec) {
            throw new Exception(ec);
        }
    }
}

